<?php

/**
 * 字符串转换整数 (atoi)
 * Class Solution
 */
class Solution {
    /**
     * @param String $str
     * @return Integer
     */
    function myAtoi($str) {
        $str=trim($str);

        $max=pow(2,31)-1;
        $min=pow(-2,31);

        $symbol=false;
        $integer=false;//整数部分

        //
        $len=strlen($str);
        for($i=0;$i<$len;$i++){
            $char=$str[$i];
            switch($char){
                case '-':
                    if($integer!==false){
                        $i=$len;
                        break;
                    }
                    if($symbol!==false){
                        return 0;
                    }
                    $symbol=-1;
                    break;
                case '+':
                    if($integer!==false){
                        $i=$len;
                        break;
                    }
                    if($symbol!==false){
                        return 0;
                    }
                    $symbol=1;
                    break;
                case '0':
                case '1':
                case '2':
                case '3':
                case '4':
                case '5':
                case '6':
                case '7':
                case '8':
                case '9':
                $integer===false && $integer=0;
                    $value=ord($char)-ord('0');
                $integer=$integer*10+$value;
                    break;
                case ' ':
                    $i=$len;
                    break;
                default:
                    $i=$len;
                    break;
            }
        }
//        echo $integer,PHP_EOL;
        $value=($symbol===false?1:$symbol)*$integer;
        if($value>$max){
            return $max;
        }
        if($value<$min){
            return $min;
        }
        return $value;
    }
}